package br.projecao.laboratorio.dao;

import br.projecao.laboratorio.negocio.Horas;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Desenvolvimento
 */
public class HorasDao extends DAO {

    public HorasDao() {
    }

    public void incluir(Horas hora) throws SQLException {

        StringBuilder inserir = new StringBuilder(" INSERT INTO lab_horas " );
        inserir.append( " (matricula,idprojeto,idatividade,descricao,horas,data) " );
        inserir.append( " value(?,?,?,?,?,?) " );

        try {
            abreConexao();
            PreparedStatement pst = conexao.prepareStatement(inserir.toString());
            pst.setInt(1, hora.getMatricula());
            pst.setInt(2, hora.getIdprojeto());
            pst.setInt(3, hora.getIdatividade());
            pst.setString(4, hora.getDescricao());
            pst.setInt(5, hora.getHora());
            pst.setDate(6, new java.sql.Date(hora.getData().getTime()));
            pst.execute();
        } catch (SQLException e) {
            throw e;
        } finally {
            fechaConexao();
        }
    }

    public void alterar(Horas horas) throws SQLException {
        String altera = "UPDATE lab_horario SET descricao=?, hora=?, data=? " +
                "where matricula = ? ";
        try {
            abreConexao();
            PreparedStatement pst = conexao.prepareStatement(altera);
            pst.setString(1, horas.getDescricao());
            pst.setInt(2, horas.getHora());
            pst.setDate(3, new java.sql.Date(horas.getData().getTime()));
            pst.setInt(4, horas.getMatricula());
            pst.executeUpdate();
        } catch (SQLException ex) {
            throw ex;
        } finally {
            fechaConexao();
        }
    }

    public void excluir(Horas horas) throws SQLException {
        String del = "delete from lab_horas where matricula=?";
        try {
            abreConexao();
            PreparedStatement pst = conexao.prepareStatement(del);
            pst.setInt(1, horas.getMatricula());
            pst.executeUpdate();
        } catch (SQLException ex) {
            throw ex;
        } finally {
            fechaConexao();
        }

    }

    public List<Horas> consultar(Horas horas) throws SQLException {
        StringBuilder listar = new StringBuilder(" select ");
        listar.append(" matricula,idprojeto,idatividade,descricao,horas,data ");
        listar.append(" from lab_horas ");
        listar.append(" where matricula = ? ");
        List<Horas> retorno = new ArrayList<Horas>();
        try {
            abreConexao();
            PreparedStatement pst = conexao.prepareStatement(listar.toString());
            pst.setInt(1, horas.getMatricula());
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                horas=new Horas();
                horas.setMatricula(rs.getInt("matricula"));
                horas.setIdprojeto(rs.getInt("idprojeto"));
                horas.setIdatividade(rs.getInt("idatividade"));
                horas.setDescricao(rs.getString("descricao"));
                horas.setHora(rs.getInt("horas"));
                horas.setData(rs.getDate("data"));
                retorno.add(horas);
            }
        } catch (SQLException ex) {
            throw ex;
        } finally {
            fechaConexao();
        }
        return retorno;
    }
}
